• Linux系统会为各种功能创建不同的用户账户,而这些账户并不是真的用户,这些账户叫做系统账户,是系统上运行的各种服务进程访问资源用的特殊账户,所有运行在后台的服务都需要一个系统用户账户登录到Linux系统上
  • Linux为系统账户预留了500以下的UID值,为普通用户创建账户时,大多数Linux系统会从500开始,将第一个可用UID分配给这个账户
  • Linux系统将用户密码保存在另一个单独的文件中(叫做shadow文件,位置在/etc/shadow),只有特定的程序可以访问这个文件
  • useradd命令可以一次性创建新用户账户及设置用户HOME目录结构,useradd命令使用系统的默认值以及命令行参数来设置用户账户,系统默认值被设置在/etc/default/useradd文件中,可以使用加入了-D选项的useradd命令查看所有Linux系统中的这些默认值:# /user/sbin/useradd -D

    GROUP=100

    HOME=/home

    INACTIVE=-1

    EXPIRE=

    SHELL=/bin/base

    SKEL=/etc/skel

    CREATE_MAIL_SPOOL=yes

    在创建新用户时,如果不在命令行中指定具体的值,useradd命令就会使用-D选项所显示的那些默认值:

    • 新用户被添加到GID为100的公共组
    • 新用户的HOME目录将会位于/home/loginname
    • 新用户帐号密码在过期后不会被禁用
    • 新用户帐号为被设置过期日期
    • 新用户账户将bash shell作为默认shell
    • 系统会将/etc/skel目录下的内容复制到用户的HOME目录下
    • 系统为该用户账户在mail目录下创建一个用于接收邮件的文件

    useradd命令允许管理员创建一份默认的HOME目录配置,然后把它作为创建新用户HOME目录的模板,这样就能自动在每个新用户的HOME目录里放置默认的系统文件,在本例中,系统会自动将/etc/skel目录下的文件复制到你创建的每个用户的HOME目录。

    默认情况下,useradd命令不会创建HOME目录,但是-m命令行选项会使其创建HOME目录,例如useradd -m test

  • 默认情况下userdel命令会只删除/etc/passwd文件中的用户信息,而不会删除系统中属于该账户的任何文件,如果加上-r参数,userdel会删除用户的HOME目录以及邮件目录
  • 组权限允许多个用户对系统中的对象(比如文件、目录、设备等)共享一组共用的权限
  • Ubuntu会为每个用户创建一个单独的与用户帐号同名的组,在添加用户前后可用grep命令或tail命令查看/etc/group文件的内容比较
  • 系统账户用的组通常会分配低于500的GID值,而用户组的GID则会从500开始分配,/etc/group文件有4个字段:

    组名

    组密码

    GID

    属于该组的用户列表

  • umask命令用来设置所创建文件和目录的默认权限,例如我的系统中输入umask命令控制台会输出0002,第一位代表了一项特别的安全特性,叫做粘着位,后面的3位表示文件或目录对应的umask八进制值,需要需要的是umask值只是一个掩码,它会屏蔽掉不想授予该安全级别的权限,要把umask值从对象的全权限值中减掉,对文件来说,全权限的值为666,而对目录来说,则是777。在大多数Linux发行版中,umask值通常会设置在/etc/profile启动文件中,不过有一些是设置在/etc/login.defs文件中,例如ubuntu,可以使用umask命令为默认的umask设置一个新值